#ifndef REQUEST_HANDLER_HH
# define REQUEST_HANDLER_HH

#include "request.hh"

//Abstract RequestHandler interface
//To implement in client & server
//This class implemnts a treat method for each type of requests
class RequestHandler
{
public:
  virtual void treat (const boost::shared_ptr<GetObject>& o, const int* clientid = 0) = 0;
  virtual void treat (const boost::shared_ptr<AskMap>& o, const int* clientid = 0) = 0;
  virtual void treat (const boost::shared_ptr<Connection>& o, const int* clientid = 0) = 0;
  virtual void treat (const boost::shared_ptr<Disconnection>& o, const int* clientid = 0) = 0;
  virtual void treat (const boost::shared_ptr<GetAllObjects>& o, const int* clientid = 0) = 0;
  virtual void treat (const boost::shared_ptr<Text>& o, const int* clientid = 0) = 0;
  virtual void treat (const boost::shared_ptr<UpdateObj>& o, const int* clientid = 0) = 0;
  virtual void treat (const boost::shared_ptr<UpdatePos>& o, const int* clientid = 0) = 0;
  virtual void treat (const boost::shared_ptr<GameMode>& o, const int* clientid = 0) = 0;
  virtual void treat (const boost::shared_ptr<GameZone>& o, const int* clientid = 0) = 0;
  virtual void treat (const boost::shared_ptr<Ready>& o, const int* clientid = 0) = 0;
  virtual void treat (const boost::shared_ptr<Move>& o, const int* clientid = 0) = 0;
};

#endif /// !REQUEST_HANDLER_HH
